package com.atguigu.stack;


//使用数据来实现栈
public class StackArrayDemo {
    public static void main(String[] args) {
        StackArray stackArray = new StackArray(10);
        stackArray.push(10);
        stackArray.push(20);
        stackArray.push(30);
        stackArray.pop();
        stackArray.list();
    }

}

class StackArray{
    //定义stack最大值
    int max;
    int arry[];
    //定义一个栈顶指针
    int top = -1;

    public StackArray(int max){
        this.max = max;
        arry = new int[max];
    }

    //判断stack是否为空
    public boolean isEmpty(){
        return top == -1;
    }

    //判断stack是否已满
    public boolean isFull(){
        return top == max-1;
    }

    public void push(int val){
        if (isFull()){
            System.out.println("栈已满，无法插入数据");
            return;
        }
        top++;
        arry[top]=val;
    }

    //从栈中取出数据
    public void pop(){
        if (isEmpty()){
            System.out.println("栈已空，无法删除数据");
            return;
        }
        //调整栈顶的序号，后续入栈的时候会覆盖掉没有真实删除的数据
        top--;
    }

    //展示栈中所有的数据
    public void list(){
        if (isEmpty()){
            System.out.printf("栈已空，无数据展示");
            return;
        }
        int temp = top;
        for (int i=temp;temp>=0;temp--){
            System.out.println(arry[temp]);
        }
    }



}